import { authApi, LoginParams } from '../../utils/api'

Page({
  // 页面数据
  data: {
    phone: '',
    password: '',
    showPassword: false,
    phoneError: '',
    passwordError: '',
    loading: false,
    formValid: false
  },

  // 页面加载
  onLoad() {
    // 检查是否已登录
    this.checkLoginStatus()
  },

  // 检查登录状态
  checkLoginStatus() {
    const token = wx.getStorageSync('token')
    if (token) {
      // 已登录，跳转到首页
      wx.switchTab({
        url: '/pages/index/index'
      })
    }
  },

  // 手机号输入处理
  onPhoneInput(e: any) {
    const value = e.detail.value.replace(/[^\d]/g, '')
    this.setData({
      phone: value,
      phoneError: ''
    })
    this.validateForm()
  },

  // 密码输入处理
  onPasswordInput(e: any) {
    const value = e.detail.value
    this.setData({
      password: value,
      passwordError: ''
    })
    this.validateForm()
  },

  // 切换密码可见性
  togglePassword() {
    this.setData({
      showPassword: !this.data.showPassword
    })
  },

  // 表单验证
  validateForm() {
    const { phone, password } = this.data
    let isValid = true

    // 验证手机号
    if (!phone) {
      this.setData({ phoneError: '请输入手机号' })
      isValid = false
    } else if (!/^1[3-9]\d{9}$/.test(phone)) {
      this.setData({ phoneError: '请输入正确的手机号格式' })
      isValid = false
    }

    // 验证密码
    if (!password) {
      this.setData({ passwordError: '请输入密码' })
      isValid = false
    } else if (password.length < 6) {
      this.setData({ passwordError: '密码长度不能少于6位' })
      isValid = false
    }

    this.setData({
      formValid: isValid && phone.length === 11 && password.length >= 6
    })

    return isValid
  },

  // 登录处理
  async onLogin() {
    if (!this.validateForm()) {
      return
    }

    this.setData({ loading: true })

    try {
      const params: LoginParams = {
        phone: this.data.phone,
        password: this.data.password
      }

      const res = await authApi.login(params)
      
      console.log('登录响应:', res)
      if (res.code === 200) {
        // 登录成功
        wx.setStorageSync('token', res.data.token)
        wx.setStorageSync('userInfo', res.data.employees)

        wx.showToast({
          title: '登录成功',
          icon: 'success',
          duration: 1000
        })

        // 延迟跳转，让用户看到成功提示
        setTimeout(() => {
          wx.switchTab({
          url: '/pages/attendance/attendance'
        })
        }, 1000)

      } else {
        // 登录失败
        wx.showToast({
          title: res.msg || '登录失败',
          icon: 'none'
        })
      }

    } catch (error: any) {
      console.error('登录错误:', error)
      
      // 网络错误或服务器错误
      let errorMsg = '网络错误，请重试'
      
      if (error.errMsg && error.errMsg.includes('request:fail')) {
        errorMsg = '网络连接失败，请检查网络设置'
      } else if (error.message && error.message.includes('timeout')) {
        errorMsg = '请求超时，请重试'
      }

      wx.showToast({
        title: errorMsg,
        icon: 'none'
      })

    } finally {
      this.setData({ loading: false })
    }
  },

  // 页面卸载时清理
  onUnload() {
    this.setData({
      phone: '',
      password: '',
      phoneError: '',
      passwordError: ''
    })
  }
})